---
title: Basic EAS Update Debugging
sidebar_title: Basic
description: Learn how to use basic debugging techniques to fix an update issue.
---

import { ContentSpotlight } from '~/ui/components/ContentSpotlight';
import { Terminal } from '~/ui/components/Snippet';

This guide shows how to verify our configuration so that we can find the source of problems like an app not showing a published update. It's important to tell the current state of our app at any given time, so EAS Update was built with this in mind. Once we know which updates are running on which builds, we can make changes so that our apps are in the state we expect.

> If we are not using EAS Build, our Deployments page will be empty. Follow the guide on [debugging configuration without EAS Build](/eas-update/debug-advanced/#configuration-without-eas-build) instead.

## Go to the Deployments page

The EAS website has a [Deployments page](https://expo.dev/accounts/[account]/projects/[project]/deployments) that shows the current state of our app. The term _deployment_ refers to a group of builds and their corresponding updates. If we've made builds and updates with EAS, we can see our project's status on the website in the Deployments tab.

<ContentSpotlight
  alt="Deployments tab"
  src="/static/images/eas-update/deployments-website-tab.png"
  className="max-w-[240px]"
/>

## Common problems

The following section describes common problems and how to fix them. Below is a diagram of how EAS Update works and the spots that are useful to inspect when finding the root cause of an issue. In the following sections, we'll inspect and verify these spots and more.

<ContentSpotlight alt="Map of debugging spots" src="/static/images/eas-update/debug-map.png" />

### Unexpected channel

<ContentSpotlight
  alt="Deployment has unexpected channel"
  src="/static/images/eas-update/deployments-wrong-channel.png"
  className="max-w-[600px]"
/>

If the deployment channel is unexpected, it means our build was not built with the correct channel. To fix this, [configure our channel](/#configure-channel) and rebuild our app.

### Unexpected runtime version

<ContentSpotlight
  alt="Deployment has unexpected runtime version"
  src="/static/images/eas-update/deployments-wrong-runtime.png"
  className="max-w-[600px]"
/>

If the deployment runtime version is unexpected, it means our build was not built with the correct runtime version. To fix this, [configure our runtime version](/#configure-runtime-version) and rebuild our app.

### Unexpected branch

<ContentSpotlight
  alt="Deployment has unexpected branch"
  src="/static/images/eas-update/deployments-wrong-branch.png"
  className="max-w-[600px]"
/>

If the deployment has an unexpected branch, we need to [map our channel to the correct branch](/#map-channel-to-branch).

### Missing updates

<ContentSpotlight
  alt="Deployment has no updates"
  src="/static/images/eas-update/deployments-no-updates.png"
  className="max-w-[600px]"
/>

The displayed deployment does not have any updates. To fix this, [publish an update to the branch](/#publish-update). If an update was already published, check the [Updates page](https://expo.dev/accounts/[account]/projects/[project]/updates) to make sure it matches the runtime version of our build.

### Missing branch

<ContentSpotlight
  alt="Deployment has no branch"
  src="/static/images/eas-update/deployments-no-branch.png"
  className="max-w-[600px]"
/>

The displayed deployment has the correct channel, but it is not linked to a branch. To fix this, [map the channel to the correct branch](/#map-channel-to-branch).

### Missing deployment

If our deployment is not displayed, it means our build is not configured properly for EAS Update. To fix this, [configure our channel](/#configure-channel), [configure our runtime version](/#configure-runtime-version) and verify our [general configuration](/eas-update/debug-advanced/#verifying-app-configuration). We'll need to rebuild our app after making these changes.

### Automatic roll back when an update crashes

If everything looks correct on the Deployments page, but your app still shows the previous update or the code embedded with the build, your new update's code may be crashing. This can happen when this new update crashes before the root component renders after the app downloads and applies the new update.

EAS Update is designed to automatically roll back to the previous update if it detects that a new update crashed shortly after launch. See [how EAS Update detects crashes and rolls back to a previous working version](/eas-update/error-recovery/#explaining-the-error-recovery-flow) for more information.

To diagnose the error causing the update crash:

- See the [Troubleshooting guide on runtime issues](/debugging/runtime-issues/) to apply a strategy to identify the error.
- After identifying the error, publish a new update that fixes the crash to resolve the issue.

A common reason a new update does not work but embedded code does is due to a missing environment variable. See [how environment variables work with EAS Update](/eas-update/environment-variables/) for more information.

## Solutions

### Configure channel

To verify that a build has a specific channel, make sure our build profile in **eas.json** has a channel property:

```json eas.json
{
  "build": {
    "preview": {
      "distribution": "internal",
      "channel": "preview"
    },
    "production": {
      "channel": "production"
    }
  }
}
```

Then, we can run a command like `eas build --profile preview` to create a build with a channel named "preview".

### Configure runtime version

To verify our runtime version, we make sure our app config (**app.json**/**app.config.js**) has a `runtimeVersion` property:

```json app.json
{
  "expo": {
    "runtimeVersion": {
      "policy": "sdkVersion"
    }
  }
}
```

By default, it is `{ "policy": "sdkVersion" }`, but we can change our runtime to [use a different policy or a specific version](/eas-update/runtime-versions). Then, we can run a command like `eas build --profile preview` to create a build with the runtime version we expect.

### Map channel to branch

If the channel is not mapped to the branch we expect, we can change the link with:

<Terminal
  cmd={[
    '# eas channel:edit [channel-name] --branch [branch-name]',
    '',
    '# Example',
    '$ eas channel:edit production --branch release-1.0',
  ]}
/>

If our branch is not listed, we can create a new branch with `eas branch:create`.

### Publish update

To create and publish an update, we can run the following command:

<Terminal cmd={['$ eas update']} />

After publishing, the output will display the branch and the runtime version. This information can help us verify that we're creating an update with the configuration we expect.

## Video walkthrough

<ContentSpotlight url="https://www.youtube.com/embed/m9PLTr3t3S4" />
